package com.ashlikun.pdfview.renderer

import android.graphics.Bitmap
import android.graphics.RectF
import android.util.Size
import com.ashlikun.pdfview.model.PdfBookmark
import com.ashlikun.pdfview.model.PdfLink
import com.ashlikun.pdfview.model.PdfMeta
import com.ashlikun.pdfview.source.DocumentSource
import java.io.IOException

/**
 * 作者　　: 李坤
 * 创建时间: 2024/7/3　11:00
 * 邮箱　　：496546144@qq.com
 *
 *
 * 功能介绍：用于实现PDF渲染接口
 * 1：使用第三方渲染器
 * 2：使用安卓原生渲染器PdfRenderer（android 5.0）
 */
interface IPdfRenderer {
    /**
     * 初始化
     *
     * @param docSource 数据源
     * @param password  密码
     * @throws IOException
     */
    @Throws(IOException::class)
    fun createRenderer(docSource: DocumentSource, password: String?)

    /**
     * 打开页面
     */
    fun openPage(pageIndex: Int)

    /**
     * 渲染一个页面
     *
     * @param bitmap
     * @param pageIndex
     * @param annotationRendering
     */
    fun renderPage(bitmap: Bitmap, pageIndex: Int, width: Int, height: Int, annotationRendering: Boolean)

    /**
     * 获取页数
     */
    val pageCount: Int

    /**
     * 获取当前页面大小
     */
    fun getPageSize(pageIndex: Int): Size


    /**
     * 获取元数据
     */
    val metaData: PdfMeta?

    /**
     * 获取书签
     */
    val bookmarks: List<PdfBookmark>
    fun getPageLinks(docPage: Int): List<PdfLink>
    fun mapRectToDevice(docPage: Int, startX: Int, startY: Int, sizeX: Int, sizeY: Int, i: Int, rect: RectF): RectF
    fun close()
}
